package org.shj.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * Eureka 用于服务的发现与注册。
 * Eureka的一些问题：
 * 1. 服务注册有慢，主要是因为服务的注册涉及到周期性心跳，默认30秒一次。只有当实例、服务器和客户端的本地缓存中的元数据都
 *    相同时，服务才能被期客户端发现（所以可能需要3次心跳）。可以使用参数 eureka.instance.leaseRenewalIntervalInSeconds 修改时间间隔，从而加速客户端连接到
 *    其他服务的过程。在生产环境中最好坚持使用默认值 ，因为在服务器内部有一些计算，会对续约做出假设。
 * 2. 已停止的微服务节点注销慢或不注销。 Eureka Server 清理无效节点周期长（默认90秒），以及自我保护模式等原因，可能会遇到微服务慢甚至不注销的问题。解决方法：
 *    (1) Eureka Server 端配置关闭自我保护，并按需要配置Eureka Server 清理无效节点的时间间隔。
 *        eureka.server.enable-self-preservation = false  # 关闭自我保护
 *        eureka.server.eviction-interval-timer-in-ms = 60*1000  # 清理间隔（单位毫秒，默认是60*1000）
 *    (2) Eureka Client 端配置开户健康检查，并按需配置续约更新时间和到期时间。
 *        eureka.client.healthcheck.enabled=true (需要 spring-boot-start-actuator 依赖)
 *        eureka.instance.lease-renewal-interval-in-seconds=30  # 续约更新时间间隔（默认30秒）
 *        eureka.instance.lease-expiration-duration-in-seconds=90 # 续约到期时间（默认90秒）
 *    建议在生产环境下使用默认值 
 * 
 * 
 * @author huangjian
 *
 */
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServerApplication.class, args);
	}
}
